package com.hanamaki.study.day02;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class SeleniumElementPosition02 {

    //注册驱动
    WebDriver driver;

    // 导航对象
    WebDriver.Navigation navigation;

    @BeforeMethod
    public void setUp() {

        //注册本地火狐打开的位置
        System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\Mozilla Firefox\\geckodriver.exe");
        //初始化
        driver = new FirefoxDriver();

        navigation = driver.navigate();
    }

    @Test
    public void test() throws InterruptedException {
        /* 注册 浏览器打开的 资源路径 */
        driver.get("file:///C:/Users/Administrator/Desktop/testhtml/exam/index.html");

        /* 继续提供房源信息  a 标签  */
        WebElement houseInfo = null;

/*  1.     使用 xpath 方式 去定位 并且点击 继续提供房源信息   */
        /* WebElement 代表的是 定位到的  元素 */
        houseInfo = driver.findElement(By.xpath("//tr/td/a[@href='House.html']"));
        houseInfo.click();
        navigation.back();

/*  2.     使用 linkText 的方式来定位元  通过 标签中 实际显示在网页中的文本来定位元素         精确搜索 */
        Thread.sleep(1000);
        houseInfo = driver.findElement(By.linkText("继续提供房源信息"));
        houseInfo.click();
        navigation.back();

/*  3.     使用  partialLinkText 的方式 来定位元素    通过 标签中 实际显示在网页中的文本来定位元素    模糊搜搜    */
        /* 在进行 模糊匹配的时候 一定要注意 模糊搜索的字符串 一定要前后连贯 */
        Thread.sleep(1000);
        houseInfo = driver.findElement(By.partialLinkText("继续提"));
        houseInfo.click();
        navigation.back();

/*  4.   通过  标签名  tagName的方式来定位 指定标签的 元素  但是  一定要保证  标签要全局唯一        */
        Thread.sleep(1000);
        houseInfo = driver.findElement(By.tagName("a"));
        houseInfo.click();
        navigation.back();

/*  5.  通过 css 选择器 定位网页中的 元素         */
        Thread.sleep(1000);
        houseInfo = driver.findElement(By.cssSelector("tr td a[href='House.html']"));
        houseInfo.click();
    }


    @AfterMethod
    public void close() {
//        driver.close();
    }
}
